約 4,538,718 件
https://w.atwiki.jp/guru/pages/52.html
はじめに C++でGUIプログラミングを行います。 ただし、C++の標準ライブラリにはGUIのためのライブラリがありません。 C++でGUIプログラミングをするためのライブラリは色々ありますが、ここではQtというライブラリを使用します。 参考リンク:Qt (Wikipedia) 対象者 C++の文法が理解できる コンテンツ +開発環境のインストール 開発環境のインストール 下記のサイトからLGPl/Free版のQt SDK最新版をダウンロードしてインストールする。 http //qt.nokia.com/downloads-jp ※ 本稿執筆時の最新版はQt SDK 2009.04 (qt-sdk-win-opensource-2009.04.exe) ですが、なぜかQt Creatorが日本語化されていません。 日本語で使いたい場合は、下記サイトからQt SDK 2009.03 (qt-sdk-win-opensource-2009.03.1.exe) をダウンロードしてきて使いましょう。 http //get.qt.nokia.com/qtsdk/ 日本語化に関して情報をお持ちの方はトップページ最下部のコメントフォームからご連絡をお願いします。 +Hello World Hello World 解説文はそのうち書きます。 #include QApplication #include QLabel int main(int argc, char **argv) { QApplication app(argc, argv); // アプリケーションのリソース管理をするクラス QLabel *label = new QLabel("Hello world."); // Widget (ラベル) label- show(); // Widgetを表示 return app.exec(); // イベントループ}
https://w.atwiki.jp/amydrone/pages/11.html
SkyFend Technology is the world's leading provider of C-UAS solutions, focusing on establishing comprehensive all-weather countermeasures systems for various anti-UAV scenarios. Skyfend currently launches anti-UAV jamming guns, anti-UAV jammers, UAV detection radars, and C-UAS software systems. Skyfend AFA100 https //www.autelpilot.com/products/skyfend-afa100-anti-drone-jammer Skyfend AFA100 drone jammer is a compact, cost effective, all-in-one anti-drone jammer that can detect and jam the signals of all advanced small unmanned aerial vehicle (SUAV) threats. The device detects drone signals in all directions and provides users with preemptive warnings. Skyfend AFA100drone signal jammer is equipped with a touch panel so that users can easily access useful information. Skyfend AFA100 jamming gun will find the drone direction using directional antennae and automatically adapt to the correct jamming frequency to counter drones promptly. SkyfendBlader https //www.autelpilot.com/products/skyfend-blader Blader is a portable jammer for SUAVs. Featuring countermeasures for UAV flight control, map transmission, and GNSS bands, it can repel drones or force them to crash to solve the threat of rogue SUAVs. SkyfendTracer S/P https //www.autelpilot.com/products/skyfend-trace-p-portable-uav-detector-pilot-locator Skyfend Tracer is a portable UAV detector that effectively receives, analyzes and processes the radio signals of a wide range of UAV models. Skyfend Tracer-P is suitable for extensive and highly maneuverable operations, allowing for deployment in environments that have stringent size, weight and power demands. There are two models for various scenarios. SkyFendGuider C2 https //www.autelpilot.com/products/skyfend-guider Guider C2 software offers an intuitive and feature-rich software platform, providing C-UAS awareness and reporting capability. Supported by sensor fusion, computer vision, edge computing, machine learning and artificial intelligence, Guider integrates radars, detectors and jammers, consolidating their data into a display. It is always on alert, ensuring round the-clock monitoring of drone threats and effectively mitigating human error. SkyFendDefender PAR100 https //www.autelpilot.com/products/skyfend-defender-fmcw-radar Defender is a compact and cost-effective K-band FMCW radar that provides close-range surveillance for land, sea and air applications. It's ideal for portable scenarios and high-value target defense, such as government buildings, official residences and prisons. It utilizes advanced environmental perception and target recognition algorithms to deliver rapid target detection and deployment capabilities. Skyfend Spoofer https //www.autelpilot.com/products/skyfend-spoofer Spoofer is an advanced GNSS navigation spoofing device engineered explicitly for SUAVs. Its primary purpose is to enforce area denial, redirect drones to predetermined orientations and manipulate their flight paths to designated locations. When combined with radar, spectrum detection devices and jammers, it can cause drones to crash or force them to land at appointed locations.
https://w.atwiki.jp/suffix/pages/31.html
cvFindHomography http //chihara.naist.jp/opencv/?%BC%CD%B1%C6%CA%D1%B4%B9
https://w.atwiki.jp/temtem/pages/12.html
HRESULT CreateTextureIPLImage(LPDIRECT3DDEVICE9 pDevice, IplImage* iplImage, UINT Width, UINT Height, UINT Levels, LPDIRECT3DTEXTURE9* ppTexture) { HRESULT hr; //テクスチャ作成 hr = pDevice- CreateTexture(Width, Height, Levels, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, ppTexture, NULL); if(FAILED(hr)){ return hr; } //ロック D3DLOCKED_RECT pLockedRect; hr = (*ppTexture)- LockRect(0, pLockedRect, NULL, 0); if(FAILED(hr)){ return hr; } //転送 switch(iplImage- depth){ case IPL_DEPTH_8U { if(iplImage- nChannels = 2){//チャンネル数が2以下ならエラーを返す return E_FAIL; } int byte = iplImage- nChannels*8; unsigned long data; //32bit unsigned long r; unsigned long g; unsigned long b; unsigned long a; unsigned long *to = (unsigned long*)pLockedRect.pBits; for(UINT y=0; y Height; y++){ for(UINT x=0; x Width; x++){ data = 0; b = ((unsigned char*)(iplImage- imageData + iplImage- widthStep * y))[x * 3];//B data += b; g = ((unsigned char*)(iplImage- imageData + iplImage- widthStep * y))[x * 3 + 1];//G g = 8; data += g; r = ((unsigned char*)(iplImage- imageData + iplImage- widthStep * y))[x * 3 + 2];//R r = 16; data += r; if(iplImage- nChannels == 4){ a = ((unsigned char*)(iplImage- imageData + iplImage- widthStep * y))[x * 3 + 3];//A a = 24; data += a; }else{ data += 0xFF000000; } *to++ = data; } } } break; default return E_FAIL; break; } //アンロック hr = (*ppTexture)- UnlockRect(0); if(FAILED(hr)){ return hr; } return S_OK; }
https://w.atwiki.jp/kokeiro/pages/53.html
title.cppについて もうここまで読んだらなんとなく分かってきたかもしれませんが、やってることはびっくりするほど簡単です。正確にはやってることがとても簡単に見えるくらいまで関数を細分化しているのです。関数を分けて書かないで長文を書くと、やってることは同じなのにとても難しく見えます。 にしても驚くほど説明することがない・・・。 まずはヘッダーファイルから見ます。重複インクルード防止のマクロ記述は腸略します。 const int TG_NUM = 8;//TitleGraphicNumberの略 enum eTG_INDEX{ TG_BACK, }; struct STitle{ int Graphic[TG_NUM]; void Process();// この中でループする void Init();// 初期化 void FirstInit();// コンストラクタ void Load();// ロード void Draw();// 描画系をここにまとめる }; 見るべき点は、const指定による配列のサイズを決めいている点と、列挙型?を用いて配列の添え字を決めている点です。この場合、Graphic配列は要素数が8で、TG_BACKは0として扱われることになります。このような配列の添え字には意味が分かりやすいように列挙型を用いましょう。 Prosess関数について // 全体の処理 void STitle Process(){ Draw();// 描画をする if( Key[KEY_INPUT_Z] == 1 )// キー入力で画面チェンジ ChangeGameState( GS_MAIN ); } 現在は、描画する関数とZキーが押されたらゲーム画面に切り替える機能しかありません。ところで、このDraw関数は同じ構造体のDraw関数を呼び出しているわけです。慣れるまでは分かりにくいと思いますが、慣れると記述が簡単で読みやすくなると思います。 Init関数について // タイトル画面の初期化処理 void STitle Init(){ BgmControl.ChangePlay( BGM_TITLE ); } これはタイトル画面が呼び出されるたびに実行される初期化関数です。下の初期化とは別物です。ChangeGameState関数から呼び出されます。ここではBGMを変更する処理のみ書かれています。このBGMを変更する関数は直前まで再生されていたBGMを止めてから新しく指定したBGMを再生する機能を持っています。ちなみに、Initは英語で初期化を意味するinitializeの略です。 FirstInit関数について // 最初の変数の初期化 void STitle FirstInit(){ memset(this,0,sizeof(STitle)); } これはプログラムが起動した直後に実行される、構造体の変数の初期化をする関数です。main.cppのFirstInit関数から呼び出されます。さて、ここにあるmemset(メモリーセット)関数は、構造体や配列を初期化するときに使用されることがある関数です。とりあえず、この記述は自分自身の変数を全て0にしているということのみ覚えてください。 memset関数をアバウトに説明すると、第1引数が初期化したい構造体や配列の先頭アドレス、第2引数がどの値で変数を埋めるか、第3引数が第1引数のアドレスから、第2引数の値で変数を書き換えるバイト数という動作をします。かなり正確な動作とは違うので、詳しい使い方はググってください。 第1引数のthisは、thisポインタといい、構造体の自分自身をしめすポインタです。分かりにくいですね。そもそも、このプロトタイプ宣言は構造体の定義であって、実体を持っていません。そのため、自分自身のポインタは呼び出されるまで確定せず、定数として扱うことが出来ないのです(だいぶ嘘ついてますが、捕らえ方はこんなかんじ)。そのためthieポインタを使用する必要がるのです。 第3引数の書き換えるバイト数にはsizeof関数を用いています。sizeof関数は、引数に渡された変数や構造体の大きさを返します。単位はバイトです。 基本的に使用するのは第2引数で配列や構造体を埋めたいときに使用します。C言語の構造体?や配列?のとこを見てください。あとで書き足します。 Load関数について void STitle Load(){ Graphic[TG_BACK]= LoadGraph("picture/title_back.bmp");// タイトルの背景画像をロード } タイトル画面に表示する画像を読み込んでいます。今回は読み込む画像は1つですが、拡張性を考えて配列にしてあります。読み込む画像を追加したいときはpictureフォルダに画像を追加し、Load関数で読み込ませてください。 Draw関数について // 描画 void STitle Draw(){ DrawGraph(0,0,Graphic[TG_BACK],FALSE); DrawString(100,100,"タイトル画面です。",White); DrawString(100,120,"Zでゲームスタート。",White); } 読み込んだ画像を表示し、さらに文字を描画しています。TG_BACKはヘッダーファイルで定義した列挙定数です。文字のカラーコードWhiteはglobal.hに定義されているグローバル変数です。描画する順番を間違えないようにしましょう。文字を描画してから背景画像を描画すると、文字の描画は画像に隠れてしまい見ることが出来ません。 また、このDraw関数は極力Process関数のはじめに呼び出しましょう。これはデバッグする際に役に立ちます。2つのサンプルProcess関数を見てみましょう。 先にDraw関数を呼び出した場合 void STitle Process(){ Draw(); DrawString(...);// この関数の文字を見ることが出来る } 後にDraw関数を呼び出した場合 void STitle Process(){ DrawString(...);// この関数の文字は次のDraw関数に上書きされてみることが出来ない Draw(); } コメントのように、先にDraw関数を呼び出すと、デバッグのために呼び出した文字列を見ることが出来ます。デバッグのために変数を表示したりする場面は多いので、覚えておいてください。
https://w.atwiki.jp/it_certification/pages/196.html
1. 目的 2. 構成2.1. 設定概要 2.2. 構成図 2.3. netファイル 2.4. 初期設定 2.5. Apache 設定 2.6. サーバ側 ルーティング設定 3. [準備] Markingの設定3.1. ip precedenceの設定 4. [検証] WRED (検証失敗 設定方法のみ)4.1. WREDの設定 4.2. テストトラフィックの送信 4.3. showコマンドによる確認 5. [検証] WREDの詳細設定 (検証失敗 設定方法のみ)5.1. drop率の算出 5.2. drop率の設定 5.3. drop率の確認 6. [検証] dcspによるdrop6.1. dcsp マーキング 6.2. DSCPによるWRED 7. [補足] TCP global synchronization (検証失敗)7.1. TCP global synchronization 7.2. パケットカウンタ取得スクリプトの実装 7.3. 動作確認 7.4. 集計結果 1. 目的 WRED(Weighted Random Early Detection)の設定方法について確認します。 2. 構成 2.1. 設定概要 初期設定はIPアドレスのみです。 Host OS側でApacheを起動させます。 Guest OS, R1間は10Mで接続する事で、わざと輻輳を発生させます。 2.2. 構成図 2.3. netファイル model = 3620 [localhost] [[3620]] image = C \Program Files\Dynamips\images\c3620-j1s3-mz.123-18.bin ram = 128 [[ROUTER R1]] f0/0 = NIO_gen_eth \Device\NPF_{8B89D910-5ED3-4A43-9DE9-6A272A3D7592} e1/0 = NIO_gen_eth \Device\NPF_{5933302A-7AAA-475C-A8FE-A6B82B0C0F98} 2.4. 初期設定 R1 ! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 ! boot-start-marker boot-end-marker ! ! no aaa new-model ip subnet-zero ! ! no ip domain lookup ! ip cef ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface FastEthernet0/0 ip address 192.168.200.1 255.255.255.0 duplex auto speed auto ! interface Ethernet1/0 ip address 192.168.201.1 255.255.255.0 half-duplex ! interface Ethernet1/1 no ip address shutdown half-duplex ! interface Ethernet1/2 no ip address shutdown half-duplex ! interface Ethernet1/3 no ip address shutdown half-duplex ! ip http server ip classless ! ! no cdp run ! ! ! ! ! ! line con 0 line aux 0 line vty 0 4 ! ! end 2.5. Apache 設定 ホストOSにApacheをインストールし、ポートベースのバーチャルホストを定義します。構築方法はトップページ/手順書 サーバ系/Apache HTTP Server バーチャルホストの設定を参考にして下さい。 この検証例で実際に使用したhttpd.confの要所となる部分を以下に記載します。 Listen 10880 Listen 10881 Listen 10882 NameVirtualHost * 10880 NameVirtualHost * 10881 NameVirtualHost * 10882 VirtualHost * 10880 DocumentRoot "C /Program Files/Apache Software Foundation/Apache2.2/htdocs" /VirtualHost VirtualHost * 10881 DocumentRoot "C /Program Files/Apache Software Foundation/Apache2.2/htdocs10881" /VirtualHost VirtualHost * 10882 DocumentRoot "C /Program Files/Apache Software Foundation/Apache2.2/htdocs10882" /VirtualHost 2.6. サーバ側 ルーティング設定 Host OS route add 192.168.201.0 mask 255.255.255.0 192.168.200.1 Guest OS route add -net 192.168.200.0/24 gw 192.168.201.1 3. [準備] Markingの設定 3.1. ip precedenceの設定 WFQはip precedenceの値を元に優先度を決めるキューです。事前準備として、以下のmarkingをFa0/0のinput方向で行います。 通信 ip precedence SSH 5(critical) tcp10880を使用したHTTP 3(flash) tcp10881を使用したHTTP 1(priority) tcp10882を使用したHTTP 0(routine) 投入するconfigは以下の通りです。 R1(config)#ip access-list extended ACL_SSH R1(config-ext-nacl)#permit tcp any any eq 22 R1(config-ext-nacl)#exit R1(config)# R1(config)#ip access-list extended ACL_10880 R1(config-ext-nacl)#permit tcp any eq 10880 any R1(config-ext-nacl)#exit R1(config)# R1(config)#ip access-list extended ACL_10881 R1(config-ext-nacl)#permit tcp any eq 10881 any R1(config-ext-nacl)#exit R1(config)# R1(config)#ip access-list extended ACL_10882 R1(config-ext-nacl)#permit tcp any eq 10882 any R1(config-ext-nacl)#exit R1(config)# R1(config)# R1(config)#class-map CLASS_SSH R1(config-cmap)#match access-group name ACL_SSH R1(config-cmap)#exit R1(config)# R1(config)#class-map CLASS_10880 R1(config-cmap)#match access-group name ACL_10880 R1(config-cmap)#exit R1(config)# R1(config)#class-map CLASS_10881 R1(config-cmap)#match access-group name ACL_10881 R1(config-cmap)#exit R1(config)# R1(config)#class-map CLASS_10882 R1(config-cmap)#match access-group name ACL_10882 R1(config-cmap)#exit R1(config)# R1(config)# R1(config)#policy-map POLICY_F00_IN R1(config-pmap)#class CLASS_SSH R1(config-pmap-c)#set ip precedence critical R1(config-pmap-c)#exit R1(config-pmap)# R1(config-pmap)#class CLASS_10880 R1(config-pmap-c)#set ip precedence flash R1(config-pmap-c)#exit R1(config-pmap)# R1(config-pmap)#class CLASS_10881 R1(config-pmap-c)#set ip precedence priority R1(config-pmap-c)#exit R1(config-pmap)# R1(config-pmap)#class CLASS_10882 R1(config-pmap-c)#set ip precedence routine R1(config-pmap-c)#exit R1(config-pmap)#exit R1(config)# R1(config)# R1(config)#interface FastEthernet 0/0 R1(config-if)#service-policy in POLICY_F00_IN 4. [検証] WRED (検証失敗 設定方法のみ) 4.1. WREDの設定 e1/0でWREDを設定します。 R1(config)#interface Ethernet 1/0 R1(config-if)#random-detect 4.2. テストトラフィックの送信 Host OSからGuest OSへssh接続い、以下要領のwgetコマンドを3つ同時に実行します。 ip precedenceの値が小さいものほどdropされやすいので通信速度が遅くなるはずですが、下記3つのHTTP通信について速度の差は見られませんでした。 [root@localhost ~]# wget -O /dev/null http //192.168.200.100 10880/large.html --2010-11-13 16 08 44-- http //192.168.200.100 10880/large.html Connecting to 192.168.200.100 10880... connected. HTTP request sent, awaiting response... 200 OK Length 23016000 (22M) [text/html] Saving to `/dev/null 17% [======= ] 4,069,424 7.31K/s eta 37m 6s [root@localhost ~]# wget -O /dev/null http //192.168.200.100 10881/large.html --2010-11-13 16 08 37-- http //192.168.200.100 10881/large.html Connecting to 192.168.200.100 10881... connected. HTTP request sent, awaiting response... 200 OK Length 23016000 (22M) [text/html] Saving to `/dev/null 19% [======== ] 4,587,520 10.2K/s eta 34m 45s [root@localhost ~]# wget -O /dev/null http //192.168.200.100 10882/large.html --2010-11-13 16 08 32-- http //192.168.200.100 10882/large.html Connecting to 192.168.200.100 10882... connected. HTTP request sent, awaiting response... 200 OK Length 23016000 (22M) [text/html] Saving to `/dev/null 20% [======== ] 4,684,872 7.68K/s eta 34m 55s 4.3. showコマンドによる確認 show queueing random-detectコマンドでdropされる確率やdropされるたパケット数を確認できます。 (show queueing random-detect interface Ethernet 1/0のように入力すると、指定したI/Fのみの情報が得られます) R1#show queueing random-detect Current random-detect configuration Ethernet1/0 Queueing strategy random early detection (WRED) Random-detect not active on the dialer Exp-weight-constant 9 (1/512) Mean queue depth 0 class Random drop Tail drop Minimum Maximum Mark pkts/bytes pkts/bytes thresh thresh prob 0 0/0 0/0 20 40 1/10 1 0/0 0/0 22 40 1/10 2 0/0 0/0 24 40 1/10 3 0/0 0/0 26 40 1/10 4 0/0 0/0 28 40 1/10 5 0/0 0/0 31 40 1/10 6 0/0 0/0 33 40 1/10 7 0/0 0/0 35 40 1/10 rsvp 0/0 0/0 37 40 1/10 R1# 5. [検証] WREDの詳細設定 (検証失敗 設定方法のみ) 5.1. drop率の算出 WREDは以下の3つのパラメータを用いてdropされる確率をチューニングする事ができます。 項目 説明 min thresh 平均最小キュー。この値を上回るパケットがキューに格納されるとパケットがドロップされ始めます。 max thresh 平均最大キュー。この値を上回るパケットがキューに格納されるとパケットが全てドロップされます。 mark drop パケットがドロップされる確率です。 キューに格納されたパケット数がmin threshに達するとパケットがドロップされ始めます(パケット数がmin thredhの場合は、ドロップされる確率は0%です)。キューに格納されたパケットが増えパケット数がmax threshに達すると、mark dropで定義された確率でdropされます。キューに格納されたパケットがmax threshを超えると、パケットは完全にドロップされるようになります。 キューに格納されたパケット数とドロップされる確率を表したグラフは以下の通りです。 TODO グラフ 5.2. drop率の設定 dropされる確率を以下の通り設定変更する事もできます。 R1(config)#interface Ethernet 1/0 R1(config-if)#random-detect precedence 0 1 5 100 R1(config-if)#random-detect precedence 1 1 5 50 5.3. drop率の確認 show queueing random-detectにより設定を確認します。ip precedence 0, 1の設定が変わった事を確認します。 R1#show queueing random-detect interface Ethernet 1/0 Current random-detect configuration Ethernet1/0 Queueing strategy random early detection (WRED) Random-detect not active on the dialer Exp-weight-constant 9 (1/512) Mean queue depth 0 class Random drop Tail drop Minimum Maximum Mark pkts/bytes pkts/bytes thresh thresh prob 0 0/0 0/0 1 5 1/100 - 設定が変わった事を確認します。 1 0/0 0/0 1 5 1/50 - 設定が変わった事を確認します。 2 0/0 0/0 24 40 1/10 3 0/0 0/0 26 40 1/10 4 0/0 0/0 28 40 1/10 5 0/0 0/0 31 40 1/10 6 0/0 0/0 33 40 1/10 7 0/0 0/0 35 40 1/10 rsvp 0/0 0/0 37 40 1/10 R1# 6. [検証] dcspによるdrop 6.1. dcsp マーキング デフォルトではip precedenceによってドロップされる確率が変動しますが、dscpに基づいたドロップを行う事も可能です。 まずは、動作確認の準備として、Fa0/0でdscpを用いたマーキングを設定します。 R1(config)#policy-map POLICY_F00_IN R1(config-pmap)#class CLASS_SSH R1(config-pmap-c)#no set ip precedence R1(config-pmap-c)#set dscp ef R1(config-pmap-c)#class CLASS_10880 R1(config-pmap-c)#no set ip precedence R1(config-pmap-c)#set dscp af31 R1(config-pmap-c)#class CLASS_10881 R1(config-pmap-c)#no set ip precedence R1(config-pmap-c)#set dscp af21 R1(config-pmap-c)#class CLASS_10882 R1(config-pmap-c)#no set ip precedence R1(config-pmap-c)#set dscp af11 6.2. DSCPによるWRED dscpによるWREDを行うよう設定を変更します。 R1(config)#interface Ethernet 1/0 R1(config-if)#random-detect dscp-based R1(config-if)#random-detect dscp af11 1 2 100 上記設定が反映された事を確認します。 R1#show queueing interface Ethernet 1/0 Interface Ethernet1/0 queueing strategy random early detection (WRED) Random-detect not active on the dialer Exp-weight-constant 9 (1/512) Mean queue depth 0 dscp Random drop Tail drop Minimum Maximum Mark pkts/bytes pkts/bytes thresh thresh prob af11 0/0 0/0 1 2 1/100 af12 0/0 0/0 28 40 1/10 af13 0/0 0/0 24 40 1/10 af21 0/0 0/0 33 40 1/10 af22 0/0 0/0 28 40 1/10 af23 0/0 0/0 24 40 1/10 af31 0/0 0/0 33 40 1/10 af32 0/0 0/0 28 40 1/10 af33 0/0 0/0 24 40 1/10 af41 0/0 0/0 33 40 1/10 af42 0/0 0/0 28 40 1/10 af43 0/0 0/0 24 40 1/10 cs1 0/0 0/0 22 40 1/10 cs2 0/0 0/0 24 40 1/10 cs3 0/0 0/0 26 40 1/10 cs4 0/0 0/0 28 40 1/10 cs5 0/0 0/0 31 40 1/10 cs6 0/0 0/0 33 40 1/10 cs7 0/0 0/0 35 40 1/10 ef 0/0 0/0 37 40 1/10 rsvp 0/0 0/0 37 40 1/10 default 0/0 0/0 20 40 1/10 R1# 7. [補足] TCP global synchronization (検証失敗) 7.1. TCP global synchronization TCP global synchronizationとは、輻輳発生時、全てのコンピュータが同時に送信速度を過度に遅めたり早めたりする現象です。このような現象が発生してしまうと、ネットワークを効率的に使用する事ができません。 RED/WREDを使用する目的の1つとして、このようなTCP global synchronizationを回避する事が挙げられます。 この補足説明では、「TCP global synchronizationが本当に起こっているのか」「WREDによってTCP global synchronizationが回避できているのか」を確認します。 7.2. パケットカウンタ取得スクリプトの実装 TCP global synchronizationを確認するために、1秒毎の通信速度を取得する方法を考えます。 まずは、I/Fカウンタをsnmp経由で取得できるよう、コミュニティ名を定義します。 R1(config)#snmp-server community CCIE ro サーバ側で、1秒毎にI/Fカウンタを取得するスクリプトを実装します。実装例は以下の通りです(IPアドレスやOIDは環境に応じて適宜変更して下さい)。 [root@localhost ~]# cat get_counter.sh file=$1 echo "output file is ${file}" while true do count=`snmpwalk -v 1 -c CCIE 192.168.201.1 IF-MIB ifInOctets.1 | sed -e "s/.*Counter32 //g"` echo `date`,${count} | tee -a ${file} sleep 1 done [root@localhost ~]# 実行例は以下の通りです。私の場合は、第一引数に出力ファイル名を指定するように実装しました。 [root@localhost ~]# sh get_counter.sh count.csv output file is count.csv Sat Nov 13 16 54 14 JST 2010,125790252 Sat Nov 13 16 54 15 JST 2010,125790306 7.3. 動作確認 テストケースとしては、「WREDが無効の場合」「WREDが有効の場合」の2パターンを考えます。 それぞれのパターンで、以下wgetコマンドを実行し、3分間のI/Fカウンタの様子を取得します。 [root@localhost ~]# wget -O /dev/null http //192.168.200.100 10880/large.html --2010-11-13 16 39 33-- http //192.168.200.100 10880/large.html Connecting to 192.168.200.100 10880... connected. HTTP request sent, awaiting response... 200 OK Length 23016000 (22M) [text/html] Saving to `/dev/null 24% [=========== ] 5,668,864 7.05K/s eta 34m 25s 7.4. 集計結果 上記の集計結果をexcelなどを用いて集計します。どちらもTCP global synchronizationは発生しているようでした。 1秒毎に集計した通信速度について以下のような分析を行いましたが、大きな差は見られません。 指標 WRED無効 WRED有効 平均 817 Kbps 764 Kbps 標準偏差 140 kbps 114 kbps 最大 1298 kbps 1142 kbps 最小 581 kbps 475 kbps WREDについては、うまく設定が反映されていないようですので、機会を見てやりなおしたいと思います。
https://w.atwiki.jp/kanelab/pages/14.html
ダイアログベースのMCFでメインダイアログのIDを変えてしまった! Debug Assertion Failed!2 Debug Assertion Failed! MFCにおけるエラー処理 MFCにおいてプログラムが開始できない2 MFCにおいてプログラムが開始できない1 switch文による処理の変更ができない libcvdのコンパイルが通らない cvReleaseImageDataが見つからない コンストラクタなのに返り値の指定が必要?.sbrファイルが足りない .bscファイルのバージョンが合わない .sbrファイルが見つからない HMENUのメンバがない LoadStringの引数がおかしい クラスの継承がうまくいかない Hello World!プログラムさえ作れない DLLファイルの関数作成場所ミス UnicodeとSHIFT-JIS関係3 UnicodeとSHIFT-JIS関係2 UnicodeとSHIFT-JIS関係1 アクセラレータが使えない リソースファイルが「他のエディタで使用中」になって使えない BB1からBB2への移行方法まとめ1 ハンドルされていない例外4 オーバーロード関数の呼び出しを解決することができません 未解決の外部シンボルが参照されない。 ダイアログベースのMCFでメインダイアログのIDを変えてしまった! 1.現象 エラーメッセージなし。デバッグ画面に飛ばされる。 デバッグでは Question.exe の 0x78a5b4d9 (mfc90ud.dll) でハンドルされていない例外が発生しました 0xC0000005 場所 0xfefeff66 を読み込み中にアクセス違反が発生しました。 と書かれ、winmain.cppファイルの42行目の pThread- m_pMainWnd- DestroyWindow(); 部分が指定される。 2.原因 タイトル通りメインとなるダイアログのIDを誤って変更してしまった。 3.解決方法 もう一つダイアログベースのMFCプログラムをテンプレートから作成しIDの名前の傾向を確認した。IDの名前は IDD_プロジェクト名_DIALOG となっている模様。これを探し、選択するべし。 Debug Assertion Failed!2 1.ErrorDialog Microsoft Visual C++ Debug Library Debug Assertion Failed! Program ...kolab\~~.exe File f \dd\vctools\crt_bld\self_x86\crt\src\strftime.c Line 832 Expression ( "Invalid format directive" , 0 ) For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) 中止(A) 再試行(R) 無視(I) 2.現象 ビルドは通る。実行すると上記のダイアログが出て止まる。 3.原因 Expression ("Invalid format directive", 0)と書いてある通り不適切な形式で指定していた。具体的には CTime ct; CString cs; cs = ct.Format( _T("%H %M %s")); において小文字の「%s」を使ってしまった。大文字が正しかった。 3.Link CTime@MSDN Formatの指定子について@MSDN Debug Assertion Failed! 1.ErrorDialog Microsoft Visual C++ Debug Library Debug Assertion Failed! Program ...ekolab\修論\Program\シミュレーション\Simulation@VS2008\Debug\Dialog.exe File f \dd\vctools\crt_bld\self_x86\crt\src\vsprintf.c Line 244 Expression ("Buffer too small", 0) For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) 中止(A) 再試行(R) 無視(I) 2.現象 ビルドは通る。実行すると上記のダイアログが出て止まる。 3.原因 Expression ("Buffer too small", 0)と書いてあるぐらいだからバッファが小さかった。 char hoge[10]; と10文字しか格納できないcharacterを定義していた。 3.解決方法 いっそchar hoge[99];とした。 MFCにおけるエラー処理 1.構文 char sHoge[40]; sprintf_s( sHoge, "Load/%s/%02d.bmp", sNameHeader, nTaskObjectNum ); if( cvLoadImage( sHoge ) == NULL ) { CString strData; strData.Format("画像%sは存在しません。",sHoge); AfxMessageBox(strData,MB_ICONSTOP); } m_iplImage = cvLoadImage( sHoge ); // ここでm_iplImageに読み込まれた 2.使用条件 (1)MFC、(2)IplImageの読み込み部分、(3)画像イメージがない場合があった 3.Link メッセージボックスの使い方 その1(AfxMessageBox) メッセージボックスの使い方 その2(AfxMessageBox) AfxMessageBoxを使う上での注意点 AfxMessageBox の使い方 考えのもとになったページ MFCにおいてプログラムが開始できない2 1.ErrorMessage OpenCV GUI Error Handler Bad argument (Array should be CvMat or IplImage) in function cvGetSize, C \User\VP\opencv\cxcore\src\cxarray.cpp(1453) Press "Abort" to terminate application. Press "Retry" to debug (if the app is running under debugger). Press "Ignore" to continue (this is not safe). 中止(A) 再試行(R) 無視(I) 2.現象 MFCにおいてプログラムを起動しようと「ctrl + F5」をクリックすると上記のエラーメッセージが出て起動しない。ビルドは通る。 3.原因 画像の読み込みミス。画像がなかった。プログラム上で読み込む数と実際にフォルダ内で用意した画像数が異なっていた。似たようなエラーを2回繰り返していることからも今後はエラー処理を作っておくべきか? MFCにおいてプログラムが開始できない1 1.ErrorMessage OpenCV GUI Error Handler Null pointer () in function cvGetRotationMatrix, C \User\VP\opencv\cv\src\cvimgwarp.cpp(1197) Press "Abort" to terminate application. Press "Retry" to debug (if the app is running under debugger). Press "Ignore" to continue (this is not safe). 中止(A) 再試行(R) 無視(I) 2.現象 MFCにおいてプログラムを起動しようと「ctrl + F5」をクリックすると上記のエラーメッセージが連続的に出て起動しなくなる。処理が止まっている様子はない。とにかく「中止(A)」ボタンを押して処理を止めるしかない。 3.原因 オブジェクトの指定ミス。存在しないオブジェクトのメンバ関数を呼び出していた。「Null pointer ()」からも存在しないポインタを呼び出した可能性を示している。 今回バグが見つかったのは全くの偶然でありプログラミングには高い注意力が必要であると改めて認識した。 switch文による処理の変更ができない 1.現象 優先度判定シミュレーションプログラムにおいてロボットの動作制御をswitch文で行っていたが、最初のcase 0しか動作しなかった。 2.原因 switch文の判定変数であるm_nStateの初期化部分がわからず、とりあえずswitch文の直前でm_nState=0;としていた。 よってm_nStateの変更が反映されず次の処理が行われなかった。 3.教訓 連続処理におけるswitch構文を使用する際は判定変数の初期化場所を気をつけなければいけない。 連続処理で常に初期化されてしまうと連続処理中の変更まで初期化されてしまう。 libcvdのコンパイルが通らない 1.ErrorMessage 構文エラー C2059 , が使えないよ 2.エラー場所 3.原因 互換性のために残されているキーワードnear,farを変数に使っていた。 4.解決方法 near,farを他の名前に変更 5.その他C++で使えないキーワード near far huge 上記の言葉を入れてもint,ifなどのように文字の色が変わることはないので要注意、MicroSoft Visual studio C++ 6.0と2005では使わないように(他のC++コンパイラーは不詳)。 cvReleaseImageDataが見つからない 1.ErrorMessage error C3861 cvReleaseImageData 識別子が見つかりませんでしたc ~~cvext.hpp 2.原因 OpenCVの古いバージョンの関数を使っている? 3.解決方法 古い関数を全て消す。現在は難しいのでとりあえずcvext.hを引き続き使用する。 4.Link 掲示板 コンストラクタなのに返り値の指定が必要? 1.Error Message error C4430 型指定子がありません - int と仮定しました。メモ C++ は int を既定値としてサポートしていません。 2.エラーで指定された部分 class 【クラスA】 { public operator=(const 【クラスA】 sss); //←エラー発生 }; 上記のようにoperatorが付いているのが原因? 3.解決方法 operatorの頭にvoidか【クラスA】 を付ける。 4.Link 掲示板 5.まとめ 以下のエラーも一緒に出たが、上記のエラーを直したらでなくなった。 .sbrファイルが足りない 1.Error Message エラー4error BK1513 インクリメンタルでないビルドにはすべての .SBR ファイルが必要です。BSCMAKEDialog warning BK4502 切り捨てられた .SBR ファイル .\Debug\cvext.sbr は .\Debug/Dialog.bsc 内にありません。BSCMAKEDialog 2.現象 下記の.sbr、.bscファイルの対策をとってみたところ上記のエラーメッセージが出た。 3.解決方法 一緒に出たエラーC4430を直せば解決した。 .bscファイルのバージョンが合わない 1.Error Message error BK1515 .\Debug/Dialog.bsc バージョンが適合していません。インクリメンタル ビルドができません。BSCMAKEDialog 2.現象 VC++6.0からVS2008へ開発環境を移したら発生。 3.解決策 (1).bscファイルを削除してリビルド→別のエラーが発生 (2)検索→MSDNしか出てこない。 一緒に出たエラーC4430を直せば解決した。 .sbrファイルが見つからない 1.Error Message error BK1506 ファイル .\Debug\myWholeClass.sbr を開けません。 No such file or directoryBSCMAKEDialog 2.現象 VC++6.0からVS2008へ開発環境を移したら発生。 3.解決策 なし。BK1506で検索してもMSDNしか出てこない。…どうする? 一緒に出たエラーC4430を直せば解決した。 HMENUのメンバがない 1.Error Message error C2208 HMENU__ * メンバのない列挙型、構造体、共用体が定義されました。c \program files\microsoft sdks\windows\v6.0a\include\winuser.h2817 2.現象 VS2008で ファイル→新規作成→プロジェクト→VsualC++→Win32→Win32プロジェクト→アプリケーションの種類→DLL (+ 追加オプション→シンボルのエクスポート)→完了 を選択してクラスライブラリを作成しようとすると上記のエラーメッセージが表示されビルドできない。 3.原因 HMENUはwinuser.h内で定義されていたのだが、誤ってHMENUの中身を消してしまった模様。 4.解決方法 winuser.hを検索→winuser.h内をHMENU周辺の関数で検索→HMENUの値を探す。 HMENU hMenu; と変更。MicroSoft提供のファイルの中身を変えてしまうこともあるようだ。 5.Link プッシュボタンについて(掲示板) 2chスレ ネコ LoadStringの引数がおかしい 1.EllorMessage error C2065 IDS_HELLO 定義されていない識別子です。 2.原因 開発環境をVisual Studio 2008 へ変更したため6.0でWindowsプロジェクトを作成する際選択できた「単純なHello World! アプリケーション」がなくなった。それに伴ってLoadSting関数の第二引数であるWindows の文字列リソース IDの名前が変わった。 3.解決策 Resource.hファイルを確認し「IDS_~~」の名前で定義されているマクロの名前を探し、それに変更する。 IDS_HELLO ↓ IDS_APP_TITLE 4.今回の解決策を見つけるまでの手順 LoadStringをVC2008のMSDNで検索。第二引数について調べる IDS~~について書いてありそうな部分を探す。今回は「.rcファイル」→「Resource.h」の二手順で見つかった。 IDS_~~ぽい値を見つける→試してみる→解決 クラスの継承がうまくいかない 1.ErrorMessage error C2614 MyClass2 イニシャライズ リスト内のクラス MyClass1 が基本クラスでもメンバでもありません。 2.原因 コーディングミス。派生クラスの定義において継承をしていなかった。 3.解決策 class MyClass2{ ↓ class MyClass2 public MyClass1 { Hello World!プログラムさえ作れない 1.error message エラー 1 error C2065 szHello 定義されていない識別子です。 2.原因 (1)szHelloは実際に定義されていなかった。 (2)開発環境をVisual Studio 2008 へ変更したため文字セットがunicodeに変更されたことによって文字列の格納ができなくなった。 3.解決方法 (1)charでszHelloを定義 (2)szHelloを使用するDrawTextの引数を変更 DrawText( hdc, szHello , strlen( szHello ), rt, DT_CENTER ); DrawText( hdc, TEXT("Hello World!") , strlen( szHello ), rt, DT_CENTER ); DLLファイルの関数作成場所ミス 1.error message エラー1 error C2144 構文エラー long は ; によって先行されなければなりません。 エラー2 error C4430 型指定子がありません - int と仮定しました。メモ C++ は int を既定値としてサポートしていません 2.原因 開発環境をVisual Studio 2008 へ変更したため教科書の記述と合わなくなった。 3.解決方法 Visual Studio 2008 では dllmain.cpp DLL アプリケーションのエントリ ポイントを定義します。 MyDll1.cpp(※プログラム作成時に自分でつけたプロジェクト名) DLL アプリケーション用にエクスポートされる関数を定義します。(こちらが自分で作った方) の2種類存在する。新しくクラスを作成する場合はMyDll1.cpp側に作成する。 UnicodeとSHIFT-JIS関係3 1.Error Message error C2664 CnstDst CnstDst(char *) 1 番目の引数を const wchar_t [22] から char * に変換できません。 2.原因 (1)開発環境がVisual Studio 2008 に移り、基本の文字セットにUnicodeを使用するように変更されたため。 (2)さらに今回は関数の引数で char *s を渡しているので変数をTEXT("")で囲むわけにはいかない。 以下にUnicode文字セット下における文字列操作方法をまとめておく 3.解決方法 (1)使用する変数の型を変更 char sDat[80];// 文字列型のメンバ変数 ↓ wchar_t sDat[80]; (2)引数の型を変更 CnstDst( char *s );// コンストラクタ ↓ CnstDst( wchar_t *s ); (3)入力する文字列をTEXT("")で囲む CnstDst cd( "文章" ); ↓ CnstDst cd( TEXT("文章")); 4.Link wchar_tについて UnicodeとSHIFT-JIS関係2 1.error message エラー1error C2664 atoi 1 番目の引数を TCHAR [80] から const char * に変換できません。(新しい機能 ; ヘルプを参照) 2.原因 開発環境がVisual Studio 2008 に移り、基本の文字セットにUnicodeを使用するように変更されたため。 3.解決方法 (1)使用する関数を変更する(推奨) a = atoi( sBuff );//Unicodeではatoiを使えない ↓ a = _wtoi( sBuff );// 代わりに_wtoiを使う (2)文字セットを変更する メニューバー→プロジェクト→~のプロパティ(ソリューションエクスプローラーから表示してもよい)→構成プロパティ→全般→プロジェクトの既定値→文字セット において「Unicode文字セットを使用する」から「マルチバイト文字セットを使用する」に変更する。 4.Link CStringからint型への変換について(掲示板) _wtoiへの変更について UnicodeとSHIFT-JIS関係1 1.エラーメッセージ error C2664 lstrcpyW 1 番目の引数を char [80] から LPWSTR に変換できません。(新しい機能 ; ヘルプを参照) 2.原因 VisualStudio2005からデフォルトの文字セットがUnicodeに変更された。以前はShift_JISだった。この変更によりlstrcpyやMessageBoxにcharで日本語を表示できなくなった。 3.解決方法 (1)プロジェクト全体でShift_JISを使えるようにする メニューバー→プロジェクト→~のプロパティ(ソリューションエクスプローラーから表示してもよい)→構成プロパティ→全般→プロジェクトの既定値→文字セット で「マルチバイト文字セットを利用する」に変更する。 (2)lstrcpy関数でShift_JISを使えるようにする 文字列の前に「TEXT」を付ける。例えば wcex.lpszClassName = "ModelApp"; ↓ wcex.lpszClassName = TEXT("ModelApp"); と変更する。 4.Link (1)の解決方法 (2)の解決方法 原因について書き込み 別の角度から アクセラレータが使えない 1.ErrorMessage エラー1 error C2065 IDR_ACCELERATOR1 定義されていない識別子です。c \t.h\kanekolab\修論\program\シミュレーション\~~.cpp59 2.原因 エラーC2065の通りIDR_ACCELERATOR1が定義されていない。IDR_ACCELERATOR1はコードとは別に作らなければいけない様子。 3.解決方法 IDR_ACCELERATOR1の作り方…調査中 リソースファイルが「他のエディタで使用中」になって使えない 1.原因 resource.hを開くと起きる現象。 2.解決方法 resource.hを閉じる。 BB1からBB2への移行方法まとめ1 1.基本手順 (1)BB2の基本動作プログラム(カメラから画像を取って表示するヤツ)からひたすらコードを投入。この段階では基本的にコードを消さない。 (2)BB2から得られるもの確認。今回は triclopsContext , triclopsInput , triclopsImage , IplImage(Color , Rect , Edge , Disp) (3)BB1上のプログラムと対応するものとの違い確認→変換 (4)triclops関係は変換不可能なので直接書き換え(距離取得部分とか) 2.躓いた所 (1)IplImageの〔チャンネル、ビットデプス、サイズ〕の確認を怠りcvGetMatでエラーを連発&混乱に陥る。以下のエラーメッセージがよく出た。 OpenCV GUI Error Handler Null pointer (The image has NULL data pointer) in function cvGetMat, C \User\VP\opencv\cxcore\src\cxarray.cpp(2794) Press "Abort" to terminate application. Press "Retry" to debug (if the app is running under debugger). Press "Ignore" to continue (this is not safe). 中止(A) 再試行(R) 無視(I) (2)画像変換の知識不足(チャンネル数変更、Header⇔Image変更) (3)距離検出はtriclopsImageを使用していることに途中まで気付かなかった(triclopsContextなどの変更が遅れた) (4)定義はされているが、メモリが確保されていないものがあった。 今回はHSVImageとRGBImage。 よって、以下を追加 HSVImage= cvCreateImage( cvSize( m_nImageWidth, m_nImageHeight ), IPL_DEPTH_8U, 3 ); BGRImage= cvCreateImage( cvSize( m_nImageWidth, m_nImageHeight ), IPL_DEPTH_8U, 3 ); ハンドルされていない例外4 1.ErrorMessage ~~~.exe の 0x7c94fe40 でハンドルされていない例外が発生しました 0xC0000005 場所 0x00000100 を読み込み中にアクセス違反が発生しました。 2.原因 コードミス。 3.解決策 以下のように変更した。 wsprintf( s, TEXT( "KeyCode = %0x, Ctrl = %s, Shift = %s, Caps = %s",wParam, ctrl, shift, caps)); ↓ wsprintf( s, TEXT( "KeyCode = %0x, Ctrl = %s, Shift = %s, Caps = %s"),wParam, ctrl, shift, caps); 4.考察 ハンドルされていない例外→使用している関数に与える引数の失敗。値のミスではなく、引数部分の形が間違っている場合が多い? 「0x7c94fe40」や「0xC0000005 場所 0x00000100」などに深い意味はない。文字通り場所を表しているのみ。 デバッガで指定された部分のコードをよく読んだ方が解決の近道になる? オーバーロード関数の呼び出しを解決することができません 1 原因 Visual C++で作られたプログラムをVisual studio 2008で動かそうとした。 今回はfmodとfabsというオーバーロート関数がエラーになった。 2 解決策 visual studioではfmad、fabsともに中の数値をdouble型にするという決まりになったため、数値の前に(double)を加えた。 compare_l=fabs(Passage[0].x-obstacle1.x); ↓ compare_l=fabs((double)Passage[0].x-obstacle1.x); こんな感じ。 未解決の外部シンボルが参照されない。 1 原因 MiniBeeからBB2に変更するときでたエラー。 2 解決策 プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加依存のファイル に、以下を追加するだけ pgrflycapture.lib pgrflycapturegui.lib
https://w.atwiki.jp/bambooflow/pages/278.html
GLEW The OpenGL Extension Wrangler Library GLEW The OpenGL Extension Wrangler Libraryダウンロード&インストール GLEWのはじめ GLEWでOpenGLのバージョンサポートを確認する ダウンロード&インストール http //glew.sourceforge.net/ 上記のパスからダウンロードできる。 あらかじめglut(freeglut)はインストールしておく。 % tar xzf glew-1.x.x.tgz % cd glew-1.x.x % make % sudo make install ちなみに、インストール先は、Makefileの43行目あたりGLEW_DESTで設定を変更できる。 GLEWのはじめ glew_hello.cpp #include GL/glew.h #include GL/glut.h #include stdio.h #include stdlib.h int main(int argc, char* argv[]) { glutInit( argc, argv); glutCreateWindow("Window"); // これがないとエラーとなる GLenum err; err = glewInit(); if (err != GLEW_OK) { printf( "GLEW error %s\n", glewGetErrorString(err) ); exit(1); } printf( "GLEW Version %s\n", glewGetString(GLEW_VERSION) ); return 0; } % g++ -o run.x glew_hwllo.cpp -lglut -lglew apt-getとかの場合は、-lGLEWとなるかもしれない。 GLEWでOpenGLのバージョンサポートを確認する OpenGL3.3をサポートしているかの問い合わせ if (!glewIsSupported("GL_VERSION_3_3")) { std cerr "OpenGL 3.3 not supported.\n"; std exit(1); }
https://w.atwiki.jp/mizcremorne/pages/112.html
llDetectedKey key llDetectedKey(integer number) 検知されたアバター/オブジェクトのUUIDを取得する。 llDetectedKeyはデテクト系と呼ばれる関数の一つである。 デテクト系関数は以下のイベント内でしか効果がない。 [[touch]]/[[touch_start]]/[[touch_end]]・・・タッチ系イベント [[collision]]/[[collision_start]]/[[collision_end]]・・・衝突系イベント [[sensor]]・・・センサーイベント というのも、デテクト系関数とは「そのイベントを起こしたアバター/オブジェクトの情報を得る」ための関数だからである。 タッチ系イベント内で使用すれば「タッチしたアバターの情報を得る」関数となり、 衝突系イベントであれば「衝突したアバター/オブジェクトの情報を得る」関数、 センサーイベント内で使えば「センサーで検知されたアバター/オブジェクトの情報を得る」関数となる。 デテクト系関数の引数には何番目に検知されたアバター/オブジェクトかを指定する。 多くの場合、引数は0(最初に検知されたアバター/オブジェクト)である。 どういうことかと言うと、上記の特定イベントは、「イベントを起こしたアバター/オブジェクトの数」を通知してくる。 タッチスタートイベントであれば、「タッチを開始したアバターの人数」が通知される。 同時に複数のアバターがタッチを開始することはないので、人数は常に1人である。 であるので、デテクト系に指定する引数は、0(タッチを開始した最初の人)になる。 センサーイベントなどでは、同時に複数の対象が検出される可能性がある。 その場合は検知された対象の数が通知される。 例えば周囲50m以内にいるアバターを検知した結果、5人いた場合はセンサーイベントの引数に5が通知されてくる。 その場合、デテクト系関数の引数は、0を指定すると最初のアバターの情報、4が最後のアバターの情報になる(0から数える)。 以下の例はタッチしたアバターのUUIDを表示する。 default { touch_start(integer num_detected) { llSay(0, "Key = " + (string)llDetectedKey(0)); } } 以下の例は周囲50m以内のアバターを検知し、検知された対象のUUIDを全て表示する。 default { touch_start(integer num_detected){ llSensor("", NULL_KEY, AGENT, 50.0, PI); } sensor(integer num_detected) { integer i; for (i = 0; i num_detected; i ++){ llSay(0, "No." + (string)i + " Key = " + (string)llDetectedKey(0)); } } }
https://w.atwiki.jp/annomod/pages/66.html
MoveShip ok 船の操縦 船で世界を探検しましょう 左クリックで船を選択、右クリックで目的地を設定できます。ミニマップでも指定可能です。[CR] [CR]船はすぐに目的地へ移動し始めます。 さあ、船出の時だ! さあ、船出の時だ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は船で世界を探検すべきだと言っています。 新しい島を発見したぞ!すばらしい! 新しい島を発見したぞ!すばらしい![CR] [CR][THIRDPARTY_SENDER_PLAYER] は島を発見したことを称えています。 IslandsFertility ok 島で育てられる作物 島で育てられる作物は、島ごとに決まっています。 島で育てることができる作物は、画面上部の情報バーに表示されています。表示されているもの以外は農場を建てても生産されません。[CR]種を植えることにより、島で育てることができる作物を増やすことができます。 おお、神はそれぞれの島で育つ植物をお決めになられたのだ... おお、神はそれぞれの島で育つ植物をお決めになられたのだ...[CR] [CR][THIRDPARTY_SENDER_PLAYER] は島ごとに育てることができる作物が違うことを説明しています。 Dummy Dummy FlaggshipDestroyed ok 旗艦の消失 あなたは旗艦を失ってしまいました。[QUEST_SENDER]の港で新しい旗艦を購入する必要があります。 旗艦を失ってしまいました。残念ながら、あなたは同じタイプの船を造ることはできません。[CR][QUEST_SENDER]の港に行き、彼に会って新しい旗艦を購入しましょう。 旗艦を失うとは、なんということだ…![CR]しかし心配するな。私が別の船を用意しよう。 旗艦を失うとは、なんということだ…![CR]しかし心配するな。私が別の船を用意しよう。[CR] [CR][THIRDPARTY_SENDER_PLAYER] はあなたに新しい旗艦を売ってくれます。 Ausgezeichnetes Schiff... mit einer exzellenten Mannschaft! [THIRDPARTY_SENDER_PLAYER] gratuliert Ihnen zum Kauf des Flaggschiffs. Flaggschiff_Trigger LoadWares ok 積荷の扱い 積荷は港に降ろされました。 港を建てると、船に積まれていたすべての物品は自動的に港に降ろされます。[CR]入植地ですぐに建物を建てられるようにするためです。 クルーは積荷を降ろして貴公の港に運び入れたぞ。 クルーは積荷を降ろして貴公の港に運び入れたぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は船から積荷が降ろされたことを知らせています。 Dummy Dummy BuyTools ok 工具の支給 [QUEST_SENDER] は自分の港にくれば工具を売ってもいいと言っています。 工具は、ほぼすべての建物に必要となる重要な建築資材です。工具は常に切らさないようにしたほうがいいでしょう。[CR]もし自分で工具を生産できない場合は、[QUEST_SENDER]からいつでも購入することができます。他のプレイヤーも売ってくれることがあるかもしれません。 工具が足りなくなったのか?![CR]それならば喜んで貴公に売却しようではないか。 工具が足りなくなったのか?![CR]それならば喜んで貴公に売却しようではないか。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は工具を売買できて嬉しそうです。 Schaut wieder vorbei, falls Euch das Werkzeug erneut ausgehen sollte... [THIRDPARTY_SENDER_PLAYER] würde den Werkzeughandel jederzeit wiederholen. TradeWares ok 他プレイヤーとのトレード Lord Richard Northburgh はトレード可能な最初のプレイヤーです。 物品を購入したり、自分の物品を売却したりすることができます。[CR]例えば、Lord Richard Northburgh の港に行けば、売っている物品を見ることができます。 必要であれば、いつでもトレードに来るがよい。歓迎するぞ。 必要であれば、いつでもトレードに来るがよい。歓迎するぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は自分とトレードができることについて再度念を押しています。 Dummy Dummy PassiveTrade ok 自動トレード 売買したい物品を自分の港で設定してください。 自動トレードとは、自分の港で売買したい物品を設定しておくと、港に時々訪れるプレイヤーが自動的に物品を売買してくれる仕組みです。 トレードしたい物品を港で指定しておくだけで、他の者と交易することができるぞ。 トレードしたい物品を港で指定しておくだけで、他の者と交易することができるぞ。[CR]一度やってみるといい。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は貴方が自分の港で売買できることを説明してくれています。 Dummy Dummy CreateTransportationRoute ok 物品の自動輸送 島と島の間で物品を簡単に輸送することができます。 いくつかの島を入植したら、物品を自動的に輸送するよう輸送ルートを設定しましょう。[CR]輸送ルートは航路メニューから簡単に設定することができます。 各船の船長にルートを指示しておけば、物品の輸送を簡単に行なうことができるぞ。 各船の船長にルートを指示しておけば、物品の輸送を簡単に行なうことができるぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は便利な輸送ルート設定について説明しています。 Dummy Dummy HintCredit ok 融資 Lord Northburghのところで、Honourをお金に換えることができます。 資金が尽きかけています!すぐに資金を調達するには、Lord Northburghのところへ赴いて、融資をお願いしましょう。外交メニューからRichard Northburghを選択し、"融資を依頼"ボタンを押してください。[CR]注意 融資をお願いする度に、Honourが減ってゆきます。 貴公の資金はほとんど空だ。[CR]事情によっては皇帝に口添えてもいいぞ… 貴公の資金はほとんど空だ。[CR]事情によっては皇帝に口添えてもいいぞ…[CR] [CR][THIRDPARTY_SENDER_PLAYER] は融資ができることを知らせています。 Wenn Euer Geld wieder einmal zur Neige geht, mein Angebot eines Darlehens bleibt weiterhin aufrecht. [THIRDPARTY_SENDER_PLAYER] bemerkt wohlwollend, dass Sie das Darlehen angenommen haben. HonourReceive ok Honourを取得しました Congratulations!あなたの仕事が評価され、Honourを得ることができました! 街を発展させたり、特定の建物を建築/使用したり、他プレイヤーとトレードしたり、クエストを遂行したりすると、西洋、イスラムともに名声(Honour)が上がっていきます。[CR]左上にある情報バーに、現在のHonourが表示されています。 すばらしい!貴公の仕事ぶりが巷で評判になっているぞ。 すばらしい!貴公の仕事ぶりが巷で評判になっているぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] はあなたがHonourを受け取ったことを知らせています。 Dummy Dummy UseHonour ok Honourの使用 Honourをうまく使いましょう あなたが持っているHonourを使って、ゲームプレイの幅を広げましょう。[CR] [CR]様々な島の港で、Honourとアイテムを交換することができます。[QUEST_SENDER]は、 Al Zahirとの外交ランクを上げることができる贈り物を提供してくれたりします。Honourは、功績や外交に使うこともできます。 貴公が得た名声は、自分の為に使うのだ! 貴公が得た名声は、自分の為に使うのだ![CR] [CR}[THIRDPARTY_SENDER_PLAYER] はHonourを有効に使うことを提案しています。 よしよし、うまくHonourを使っているようだな! よしよし、うまくHonourを使っているようだな![CR] [CR][THIRDPARTY_SENDER_PLAYER] はあなたがHonourを使ったことを喜んでいます。 OutlawsPossible ok 貧しい人の追放 貧しい人々を追放するとならず者として戻ってきます もちろん、街から貧しい人々を追い出すのは自由です。ですが、街から貧しい人々を追い出すと、ならず者となって戻ってきて、施設を攻撃する危険性が高くなります。[CR]このリスクを減らすには、老朽化した船を港に置いておくといいかもしれません... 見なさい!貧しい人々が一丸となり、貴公を引きずり降ろそうとしているぞ! 見なさい!貧しい人々が一丸となり、貴公を引きずり降ろそうとしているぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は貧しい人々は追い出すとならず者として帰ってくると忠告しています。 OutlawsAppear ok ならず者が現れました! ならず者が建物を攻撃しています。 ならず者があなたの街を攻撃しています!近くの建物や交易所は生産がストップし、このエリアの満足度は急速に下がっていきます。[CR]ならず者の陣営を破壊し、出て行ってもらいましょう。もしお金があるなら、彼らを島に住まわせてあげることもできます。 このならず者たちをどうにかしなければ! このならず者たちをどうにかしなければ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は[THIRDPARTY_CITY]のならず者たちについて忠告をしています。 Dummy Dummy ChangeTaxload ok 税率 高い税率は住民のレベルアップの妨げになります。 税率を上げると、より多くの税収が見込めますが、同時に住民の満足度が急落します。そのため、税率を上げるのは街をもう発展させなくてもよい段階でやるべきです。[CR] [CR]もし住民を次のレベルに上げたい場合は、税率を濃い緑の部分に戻しましょう。そうすれば、住民は幸せになり次のレベルへ発展していきます。 街の財政は潤っているが、貴公の民は税金が高いと訴えているぞ? 街の財政は潤っているが、貴公の民は税金が高いと訴えているぞ?[CR] [CR][THIRDPARTY_SENDER_PLAYER] は高い税収の為に人々が発展しないことを注意しています。 Dummy Dummy UpgradeRightsLimit ok 住民のレベルアップ 街を発展させていくと、住民のレベルが上がっていきます。 現在ある住居を、次のレベルに上げることはできません。次のレベルに上げる"権利"が足りていないからです。[CR] [CR]各レベルには、次のレベルへの"権利"を生み出すのに必要な人口が設定されています。そのため、開拓民の住居をもっと増やせば、"権利"も増えていくことになります。 貴公の街を発展させるには、まず人口を増やさなければ… 貴公の街を発展させるには、まず人口を増やさなければ…[CR] [CR][THIRDPARTY_SENDER_PLAYER] は、あたたの街は"権利"が足りていないと忠告しています。 Dummy Dummy MetropolisWare ok Need for Luxury Now you are a Metropolis, your Population will develop new Needs. You have done it! You have managed to develop a small Settlement into a huge Metropolis. This has led your People to develop Needs which, of course, must be fulfilled, otherwise your Inhabitants will not be completely satisfied.[CR]Just take a look into the Houses or around the Centre to see what you can do for your People s level of Satisfaction. Oh yes… People develop some extravagant Needs in Cities as imposing as yours… [THIRDPARTY_SENDER_PLAYER] informs you about your Population s Needs. Very good! Your judicious Trading will keep your People in a good mood! [THIRDPARTY_SENDER_PLAYER] is delighted that you have acknowledged the new Needs of your People. FunctionTaxload ok 税の負担 税金は街の財源であり、また人々の満足度に影響します。 税金は、文化レベル別にレートを決めることができ、それは人々の満足度と直結しています。[CR]税率を緑のゾーンに置いて税率を低くすると、人々は非常に満足します。次のレベルに発展させる準備ができたら、濃い緑のゾーンに持ってくるようにしましょう。[CR]しかし、税率がオレンジや赤のゾーンに入ると、満足度は下がっていきます。人々は住居を出て行き、貧しい人々になってしまいます。[CR]状況を見て、慎重に税率を決める必要がありますが、長い目で見れば税率は抑えておくのがいいでしょう。 民に愛されるのか、憎まれるのか。[CR] すべては貴公が徴収する税にかかっているぞ! 民に愛されるのか、憎まれるのか。[CR] すべては貴公が徴収する税にかかっているぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は税金についていくつかのヒントを与えています。 Dummy Dummy TaxloadZivLevel1 CANCEL TaxloadZivLevel2 CANCEL TaxloadZivLevel3 CANCEL TaxloadZivLevel4 CANCEL TaxloadZivLevel5 CANCEL BuildOffice 島に入植しましょう。 島の海岸に港を建設してください。 島の海岸に船を近づけて、船メニューの"港を建設"ボタンを押してください。[CR]まずはじめに果樹園や麻農園が必要となりますから、貴方が見つけた島がこれらを生産できるかどうかを確認したほうがよいでしょう。 この素晴らしい島々のどれかに入植したほうが良いのではないか? この素晴らしい島々のどれかに入植したほうが良いのではないか?[CR] [CR][THIRDPARTY_SENDER_PLAYER] は周りの島に入植することを提案しています。 ご苦労であった![CR]この島は貴公の新しい故郷だ! ご苦労であった![CR]この島は貴公の新しい故郷だ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は入植を心から喜んでくれています。 BuildCenter ok 市場を建てましょう 住居を建てるために、まず市場を建てましょう。 市場を建てると、その周りに住居を建てることができるようになります。また最初の要求である社会性を満たすことができます。そのためには、常に市場と住居は道で繋がっている必要があります。[CR] [CR]市場はいつでも建設することができます。入植地を増やす場合は、他の島に市場を建てましょう。 どこに人々は住めばいいのだ?! どこに人々は住めばいいのだ?![CR] [CR][THIRDPARTY_SENDER_PLAYER] は住居を建てるためには市場が必要であると説明しています。 よろしい![CR]この市場は人々の生活の中心となるだろう! よろしい![CR]この市場は人々の生活の中心となるだろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は市場の完成を喜んでいます。 BuildHouses ok 住居を建てましょう 人々が移住してくるために、住居を建てましょう。 [QUEST_CITY]の住民を増やすためには、住居が必要です。開拓民の住居は市場の影響エリアにのみ建設可能です。また、市場と道で繋ぐ必要があります。 人々は天井のあるとこのに住みたいのだ。[CR]そうは思わないかね!? 人々は天井のあるとこのに住みたいのだ。[CR]そうは思わないかね!?[CR] [CR][THIRDPARTY_SENDER_PLAYER] は住居を建てることを奨めています。 おお、やったな! おお、やったな![CR] [CR][THIRDPARTY_SENDER_PLAYER] は最初の住居が建設されたことを喜んでいます。 BuildMoreHouses ok 街の発展 住居を建てれば建てるほど、街はどんどん成長していきます。 住民の数が増えると、税収が増え建築可能な建物が増えていきます。[CR]人口がある数に到達すると、文化レベルも上がっていきます。 もう少し住居を建ててもいいと思わないか? もう少し住居を建ててもいいと思わないか?[CR] [CR][THIRDPARTY_SENDER_PLAYER] は街を発展させるためにも、もっと家を建てることを奨めています。 すばらしい![CR]貴公の街は今にどんどん発展していくだろう! すばらしい![CR]貴公の街は今にどんどん発展していくだろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は住居が建設されたことを喜んでいます。 Bau mehr Häuser deaktivieren ConnectionStreetNeeded ok 道が繋がっていません 住民が市場などの公共施設に行くことができるように、道を整備しましょう。 住民が公共施設を使えるようにするには、住居とを道で繋ぐ必要があり、それが社会性や信仰を満たす唯一の方法となります。 道がないだと?[CR]貴公の民は泥の中を進まねばならぬのか?! 道がないだと?[CR]貴公の民は泥の中を進まねばならぬのか?![CR] [CR][THIRDPARTY_SENDER_PLAYER] は住居に道が繋がっていないと注意しています。 そうだ![CR]これで民は市場に行くことができるだろう。 そうだ![CR]これで民は市場に行くことができるだろう。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は道が整備されたことを喜んでいます。 BuildLumberjack ok 建築資材 木材 木こり小屋を建てて木材を確保しましょう 木材は重要な建築資材です。木こり小屋をいくつか建てて、住民を安心させましょう。[CR]また、木材を運び込むために港もしくは交易所と道で繋がなければなりません。 木こり小屋を建てて木材を確保するのだ。 木こり小屋を建てて木材を確保するのだ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は木こり小屋を建てることを奨めています。 素晴らしい![CR]じきに新たな建物を建てることができるようになるだろう! 素晴らしい![CR]じきに新たな建物を建てることができるようになるだろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は初の木こり小屋完成を喜んでいます。 BuildFisherhut ok 食料 魚 漁師小屋を建てて、食料を確保しましょう。 漁師小屋は開拓民の食を満たしてくれます。島の海岸に建設可能です。[CR]また、魚を運び込むために、港もしくは交易所と道で繋がなければなりません。 貴公の民は飢えているぞ![CR]海には沢山の魚がいるというのに...! 貴公の民は飢えているぞ![CR]海には沢山の魚がいるというのに...![CR] [CR][THIRDPARTY_SENDER_PLAYER] は漁師小屋を建設することを奨めています。 素晴らしい![CR]これで民の腹は満たされることだろう! 素晴らしい![CR]これで民の腹は満たされることだろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は漁師小屋の完成を喜んでいます。 ConnectionStreetWorkshops ok 生産拠点を道で繋ぎましょう 生産物は、道を通って港や交易所に運び込まれます。 生産拠点は港もしくは交易所と道で繋がっている必要があります。そうしないとカートを使って生産物を倉庫に運び込んで貯蓄することができません。[CR]原料が必要な工場は、近くにその原料を生産する生産拠点がないときに限り、港や交易所と道で繋ぐ必要があります。 何ということだ![CR]物が貯まっているというのに、道が繋がっていない... 何ということだ![CR]物が貯まっているというのに、道が繋がっていない...[CR] [CR][THIRDPARTY_SENDER_PLAYER] は生産拠点に貯まっている物品が運び出されていないと忠告しています。 よろしい![CR]問題は解決された! よろしい![CR]問題は解決された![CR] [CR][THIRDPARTY_SENDER_PLAYER] は道が繋がったことを喜んでいます。 生産拠点を道で繋ぎましょう WrongFertility ok 生産することができません 適切な土地に建てないと、作物は生産することができません。 島によって、生産可能な植物などが決まっています。[CR]そのため、農園などを建てる前に、その島で生産可能かどうかを確認する必要があります。後々、種を植えることにより、生産できるようにすることもできます。 何ということだ![CR]これでは雑草が生えるだけだ! 何ということだ![CR]これでは雑草が生えるだけだ![CR] [CR][THIRDPARTY_SENDER_PLAYER] はこの島ではその作物は育たないと言っています。 Dummy Dummy BuildFields ok 農場が必要です 農園などは物品を生産するためのフィールドが必要となります。 農園などは、建設時に農場を周りに置かなければなりません。[CR]農園を選択して、建物メニューからボタンを押して1つ1つ農場を範囲内に置いていってください。"農場作成"ボタンを押して自動的に農場を置くこともできます。 土地が無いのに、どうやって大地を耕せというのだ?! 土地が無いのに、どうやって大地を耕せというのだ?![CR] [CR}[THIRDPARTY_SENDER_PLAYER] は農場が無いことを忠告しています。 すばらしい! [CR]これで人々が働くことができるぞ! すばらしい! [CR]これで人々が働くことができるぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は農場が置かれたことを喜んでいます。 BuildRadiusWorkshop ok 資源と採掘所 資源を採取するには、資源が影響エリア内にある必要があります。 採石小屋などは、その影響エリア内に対象の資源が存在しなければなりません。[CR]適切な場所に採掘所を建てましょう。 採掘所の場所が資源から遠いようだぞ。 採掘所の場所が資源から遠いようだぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は採掘所が資源から遠いことを知らせています。 それでいいのだ![CR]採掘所が稼動しはじめたぞ。 それでいいのだ![CR]採掘所が稼動しはじめたぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は採掘所が稼動し始めたことを知らせています。 BuildChapel ok 礼拝堂が必要です 住民の信仰を満たすためには、礼拝堂が必要です。 礼拝堂は住民の信仰を満たす公共施設です。礼拝堂は住居のすぐ近くに建てましょう。[CR]住民が礼拝に行けるように、住居と道で繋ぐことを忘れないでください。 貴公の民が祈りを必要としているぞ! 貴公の民が祈りを必要としているぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は礼拝堂が必要だと忠告しています。 おめでとう![CR]なんとすばらしい礼拝堂だ! おめでとう![CR]なんとすばらしい礼拝堂だ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は礼拝堂の完成を喜んでいます。 BuildRopeyard ok 植物の加工 麻はロープ工場や機織り小屋で加工されます。 麻農園で生産された麻は、加工することができます。[CR] 加工工場は、その影響エリア内に原料工場があれば、自動的に仕入れてきてくれます。もちろん港や交易所へ道を繋ぐことも考えなければなりません。 麻農園から何を作り出したいのだね? 麻農園から何を作り出したいのだね?[CR] [CR][THIRDPARTY_SENDER_PLAYER] は麻をロープや服に加工してはどうかとアドバイスしています。 そう、そうやって麻から作ることができるのだ。よしよし! そう、そうやって麻から作ることができるのだ。よしよし![CR] [CR][THIRDPARTY_SENDER_PLAYER] は工場の完成を喜んでいます。 BuildHempPlantation ok Raw material required Build a Hemp plantation to supply your Plant with the necessary Goods. Processing plants such as Weaver s huts and Ropeyards require Goods from other Manufactories to manufacture Products. You should build your Plant near some Hemp plantations to get it up and running. One Ropeyard requires one Hemp plantation and the Weaver s hut requires two. It looks like your Manufactories lack one important Item of Goods... [THIRDPARTY_SENDER_PLAYER] notices that one of your Plants has no Hemp. There you are! Your Plant will soon take delivery of the Goods it needs. [THIRDPARTY_SENDER_PLAYER] congratulates you on building the Hemp plantation. Weberei Zwischenware Ropeyard Zwischenware RepairShip ok 修理クレーン 修理クレーンで、船を修理することができます。 修理クレーンは、影響エリア内にいる自分の船もしくは同盟プレイヤーの船を自動的に修理してくれます。[CR]1つのクレーンで、同時に1隻の船のみ修理できます。 この船はダメージを受けているようだ。 この船はダメージを受けているようだ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は船を修理したほうがいいと言っています。 いいぞ![CR]貴公は損害を受けている船をこの港に集めるのだ! いいぞ![CR]貴公は損害を受けている船をこの港に集めるのだ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は修理クレーンの完成を喜んでいます。 BuildWarehouse ok 倉庫が必要です 港湾に倉庫を建てると、最大貯蓄量を増やすことができます。 倉庫に多くの物品を貯蓄していっていますが、足りなくなってきています。[CR]港湾に倉庫を建てて、貯蓄量を増やしましょう!倉庫1軒ごとに、島の最大貯蓄量が増えていきます。 倉庫に貯蓄しきれなくなってきたなら、新しい倉庫を建てるべきだ。 倉庫に貯蓄しきれなくなってきたなら、新しい倉庫を建てるべきだ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は最大貯蓄量を増やすようアドバイスしています。 すばらしい! 街が発展しても十分なスペースができあがったぞ! すばらしい! 街が発展しても十分なスペースができあがったぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は新しい倉庫の完成を喜んでいます。 BuildLandingPlace ok 桟橋 荷の積み降ろし用に桟橋を建てましょう。 輸送ルートで物品を運んでいる船は、個々に港や港湾事務所に行って荷の積み降ろしをします。多くの船が一度に来ると、荷の積み降ろしが遅れてしまいます。[CR] [CR]桟橋を建てれば、この問題は解決します。これにより、同時に複数の船の荷を積み降ろすことができ、人々へ素早く物品が行き渡ることになります。 貴公の港は忙しそうだな... 桟橋を建ててみてはどうだろう? 貴公の港は忙しそうだな... 桟橋を建ててみてはどうだろう?[CR] [CR][THIRDPARTY_SENDER_PLAYER] は桟橋の建設を奨めています。 いいぞ!これで交易船の荷の積み降ろしが早くなるぞ! いいぞ!これで交易船の荷の積み降ろしが早くなるぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は桟橋の完成を喜んでいます。 BuildCarpenter ok 大工 建物を修理するために、大工小屋を建てましょう。 住居は煤で汚れていると、火事のリスクが増大します。[CR] [CR]大工小屋を建てると、住居を修理して火事のリスクを減らすことができます。道が繋がっている影響エリア内の住居が対象となります。 何軒かの家はぼろぼろではないか…[CR]これは修理したほうがいい。 何軒かの家はぼろぼろではないか…[CR]これは修理したほうがいい。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は大工小屋を建てることを奨めています。 貴公の街の大工はよく働いてくれている! 貴公の街の大工はよく働いてくれている![CR] [CR][THIRDPARTY_SENDER_PLAYER] は大工小屋の完成を喜んでいます。 BuildFirestation ok 火消し小屋 火事から住民を守るために火消し小屋を建てましょう。 火事です!炎が街を襲っています!ボヤ程度であれば住民だけで消し止めることができますが、大きな炎には対応できません。[CR] [CR]火消し小屋を建てて街を炎から守ってください。影響エリア内すべての建物を守ってくれます。ただし、道が繋がっている必要があります。 火事だ!緊急事態だ!火消し小屋はないのか?! 火事だ!緊急事態だ!火消し小屋はないのか?![CR] [CR][THIRDPARTY_SENDER_PLAYER] は緊急に火消し小屋の建設が必要なことを伝えています。 おお、神よ![CR]火はもうじき消し止められるであろう! おお、神よ![CR]火はもうじき消し止められるであろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は安堵し、また火消し小屋の完成を喜んでいます。 BuildHospice ok 救貧院 救貧院は多くの貧しい人を救ってくれます。 貧しい人々は"市民権"を生み出しますが、住民の満足度を下げ、コストが発生し、病気のリスクも増大します。[CR]これを解決するためには、救貧院を建てましょう。貧しい人々を保護し、大きな問題にはならなくなります。 貧しい人々が通りに溢れている...救貧院を建ててみてはどうだ? 貧しい人々が通りに溢れている...救貧院を建ててみてはどうだ?[CR] [CR][THIRDPARTY_SENDER_PLAYER] は救貧院を建てることを奨めています。 おお、神のご加護があらんことを! おお、神のご加護があらんことを![CR] [CR][THIRDPARTY_SENDER_PLAYER] は救貧院の完成を喜んでいます。 BuildMedicus ok 病院 病院を建てて、[QUEST_CITY]の病や疫病と闘いましょう。 病や疫病が街を襲っています! 病院を建てて、できるだけ早く治療を施しましょう。[CR]病院は影響エリア内の道が繋がっている建物の人々を癒すことができます。 病や死に囲まれているぞ!どうにかしなくては! 病や死に囲まれているぞ!どうにかしなくては![CR] [CR][THIRDPARTY_SENDER_PLAYER] は病院を建てることを奨めています。 おお、神よ!流行り病はじきに収まるだろう! おお、神よ!流行り病はじきに収まるだろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は病院の完成を喜んでいます。 UseItems ok アイテム アイテムは島や船に対して特定の効果を与えます。 Congratulations! すばらしいアイテムです! アイテムは船や港の空いているスロットに入れることで、効果が現れます。[CR] [CR]このゲームでは、100の異なる効果のアイテムが存在します。注意深く、アイテムを使ってください。 trigger trigger[CR] [CR][THIRDPARTY_SENDER_PLAYER] は手に入れたアイテムは使ったほうがいいとアドバイスしています。 So lebt es sich gleich besser, nicht wahr?! [THIRDPARTY_SENDER_PLAYER] gratuliert Ihnen zum Einsatz des Items. ItemSeeds ok 種 島で新しい生産物が作れるようになります。 種を島に適用すると、新しい生産物が育てられるようになります。ただし、生産物に空きがある必要があります。この空きは、情報バーにクエスチョンマークで表示されます。[CR] [CR]北の島と南の島では、生産できるものに違いがあるため、種も特定の気候にある島でしか育てられないことに気をつけてください。港のスロットから外すまで、有効です。 よし、種を蒔くのだ!じきに芽が生えてくるだろう! よし、種を蒔くのだ!じきに芽が生えてくるだろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は種を使うことを提案しています。 すばらしい!もうじき刈り入れることができるだろう! すばらしい!もうじき刈り入れることができるだろう![CR] [CR][THIRDPARTY_SENDER_PLAYER] は島に種を蒔いたことを喜んでいます。